package pers.cj.pdos.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import pers.cj.pdos.constant.OrderType;
import pers.cj.pdos.entity.GoodsTemplate;
import pers.cj.pdos.entity.GoodsTemplateGoods;
import pers.cj.pdos.entity.Packet;
import pers.cj.pdos.mapper.GoodsTemplateGoodsMapper;
import pers.cj.pdos.mapper.GoodsTemplateMapper;
import pers.cj.pdos.mapper.OrderRuleMapper;
import pers.cj.pdos.service.IGoodsTemplateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import pers.cj.pdos.utils.Utils;
import pers.cj.pdos.vo.GoodsTemplateVo;
import pers.cj.pdos.vo.PacketVo;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author chenj
 * @since 2019-11-04
 */
@Service
public class GoodsTemplateServiceImpl extends ServiceImpl<GoodsTemplateMapper, GoodsTemplate> implements IGoodsTemplateService {
    @Autowired
    GoodsTemplateMapper goodsTemplateMapper;
    @Autowired
    GoodsTemplateGoodsMapper goodsTemplateGoodsMapper;
    @Autowired
    OrderRuleMapper orderRuleMapper;

    @Override
    public List<GoodsTemplateVo> listVoPage(String companyId, Integer page, Integer limit, Integer status, String search) {
        return goodsTemplateMapper.listVo(companyId, Utils.genPage(page,limit),limit,status,search);
    }

    @Override
    public long count(String companyId, Integer status, String search) {
        return goodsTemplateMapper.count(companyId, status,search);
    }

    @Override
    public boolean checkName(String name, String companyId) {
        return goodsTemplateMapper.selectCount(new QueryWrapper<GoodsTemplate>().eq("name",name).eq("company_id",companyId)) > 0;
    }

    @Override
    public boolean checkNo(String no, String companyId) {
        return goodsTemplateMapper.selectCount(new QueryWrapper<GoodsTemplate>().eq("no",no).eq("company_id",companyId)) > 0;
    }

    @Override
    public void insert(GoodsTemplate goodsTemplate, List<GoodsTemplateGoods> goodsTemplateGoodsList) {
        goodsTemplateMapper.insert(goodsTemplate);
        if (!Utils.isEmpty(goodsTemplateGoodsList)) {
            goodsTemplateGoodsMapper.insertBatch(goodsTemplateGoodsList);
        }
//        orderRuleMapper.addOrderRuleCurrent(goodsTemplate.getCompanyId(), OrderType.MB.getType());
    }

    @Override
    public void update(GoodsTemplate goodsTemplate, List<GoodsTemplateGoods> goodsTemplateGoodsList) {
        goodsTemplateMapper.updateById(goodsTemplate);
        if (!Utils.isEmpty(goodsTemplateGoodsList)) {
            goodsTemplateGoodsMapper.deleteByGoodsTemplate(goodsTemplate.getId());
            goodsTemplateGoodsMapper.insertBatch(goodsTemplateGoodsList);
        }
    }

    @Override
    public void delete(GoodsTemplate goodsTemplate) {
        goodsTemplateGoodsMapper.deleteByGoodsTemplate(goodsTemplate.getId());
        goodsTemplateMapper.deleteById(goodsTemplate.getId());
    }

    @Override
    public GoodsTemplateVo getVoById(String id) {
        return goodsTemplateMapper.getVoById(id);
    }

    @Override
    public GoodsTemplateVo getVoByIdWithStock(String id, String houseId) {
        return goodsTemplateMapper.getVoByIdWithStock(id,houseId);
    }
}
